home *** CD-ROM | disk | FTP | other *** search
/ Programming an RTS Game with Direct3D / Programming an RTS Game with Direct3D.iso / Examples / Chapter 7 / Example 7.4 / mesh.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-06-28  |  1.7 KB  |  101 lines

  1. #ifndef _MESH
  2. #define _MESH
  3.  
  4. #include <d3dx9.h>
  5. #include <vector>
  6.  
  7. struct BBOX{
  8.     BBOX()
  9.     {
  10.         max = D3DXVECTOR3(-10000.0f, -10000.0f, -10000.0f);
  11.         min = D3DXVECTOR3(10000.0f, 10000.0f, 10000.0f);
  12.     }
  13.  
  14.     BBOX(D3DXVECTOR3 _max, D3DXVECTOR3 _min)
  15.     {
  16.         max = _max;
  17.         min = _min;
  18.     }
  19.  
  20.     D3DXVECTOR3 max, min;
  21. };
  22.  
  23. struct BSPHERE{
  24.     BSPHERE()
  25.     {
  26.         center = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
  27.         radius = 0.0f;
  28.     }
  29.  
  30.     BSPHERE(D3DXVECTOR3 _center, float _radius)
  31.     {
  32.         center = _center;
  33.         radius = _radius;
  34.     }
  35.  
  36.     D3DXVECTOR3 center;
  37.     float radius;
  38. };
  39.  
  40. struct ObjectVertex
  41. {
  42.     ObjectVertex(){}
  43.     ObjectVertex(D3DXVECTOR3 pos, D3DXVECTOR3 norm, float u, float v)
  44.     {
  45.         _pos = pos;
  46.         _norm = norm;
  47.         _u = u;
  48.         _v = v;
  49.     }
  50.  
  51.     D3DXVECTOR3 _pos, _norm;
  52.     float _u, _v;
  53.  
  54.     static const DWORD FVF;
  55. };
  56.  
  57. class MESH
  58. {
  59.     friend class OBJECT;
  60.     friend class MESHINSTANCE;
  61.     friend struct RAY;
  62.     public:
  63.  
  64.         MESH();
  65.         MESH(char fName[], IDirect3DDevice9* Dev);
  66.         ~MESH();
  67.         HRESULT Load(char fName[], IDirect3DDevice9* Dev);
  68.         void Render();
  69.         void Release();
  70.  
  71.     private:
  72.  
  73.         IDirect3DDevice9 *m_pDevice;
  74.         ID3DXMesh *m_pMesh;
  75.         std::vector<IDirect3DTexture9*> m_textures;
  76.         std::vector<D3DMATERIAL9> m_materials;
  77.         D3DMATERIAL9 m_white;
  78. };
  79.  
  80. class MESHINSTANCE{
  81.     friend class OBJECT;
  82.     friend struct RAY;
  83.     public:
  84.         MESHINSTANCE();
  85.         MESHINSTANCE(MESH *meshPtr);
  86.         void Render();
  87.  
  88.         void SetMesh(MESH *m)            {m_pMesh = m;}
  89.         void SetPosition(D3DXVECTOR3 p)    {m_pos = p;}
  90.         void SetRotation(D3DXVECTOR3 r)    {m_rot = r;}
  91.         void SetScale(D3DXVECTOR3 s)    {m_sca = s;}
  92.  
  93.         D3DXMATRIX GetWorldMatrix();
  94.         BBOX GetBoundingBox();
  95.         BSPHERE GetBoundingSphere();
  96.             
  97.         MESH *m_pMesh;
  98.         D3DXVECTOR3 m_pos, m_rot, m_sca;
  99. };
  100.  
  101. #endif